package com.example.fengyungo.service;

import com.example.fengyungo.domain.pojo.Driver;
import org.apache.ibatis.annotations.Update;

import java.util.List;

public interface DriverService {
    /**
     * 通过用户名和密码查找司机
     *
     * @param username 用户名
     * @param password 密码
     * @return List<Driver>
     */
    List<Driver> getDriverByUsernameAndPassword(String username, String password);

    /**
     * 新增司机
     *
     * @param driver Driver
     * @return Boolean
     */
    Boolean addDriver(Driver driver);

    /**
     * 通过用户名（账号）查找司机
     *
     * @param username 用户名，账号
     * @return List<Driver>
     */
    Driver getDriverByUsername(String username);

    /**
     * 通过邮箱查找司机
     *
     * @param mail 邮箱
     * @return List<Driver>
     */
    List<Driver> getDriverByMail(String mail);

    /**
     * 更新司机昵称
     *
     * @param nickname 昵称
     * @param id       司机id
     * @return Integer
     */
    Integer updateNicknameById(String nickname, String id);

    /**
     * 更新司机性别
     *
     * @param sex 性别
     * @param id  司机id
     * @return Integer
     */
    Integer updateSexById(String sex, String id);

    /**
     * 判断司机是否具备接单权利（1为可用、具备接单权）
     *
     * @param id 司机id
     * @return Boolean
     */
    Boolean judgeStatus(String id);

    /**
     * 更新司机电话
     *
     * @param phone 电话
     * @param id    司机id
     * @return Integer
     */
    Integer updatePhoneById(String phone, String id);

    /**
     * 修改司机信息
     *
     * @param driver 司机
     * @return 更新结果数
     */
    Integer updateDriverById(Driver driver);

    /**
     * 修改司机状态
     *
     * @param driverId 司机id
     * @return Integer
     */
    Integer updateDriverStatusById(String driverId, int status);

    /**
     * 通过id获取司机电话
     *
     * @param id 司机id
     * @return String
     */
    String getPhoneById(String id);

    /**
     * 查询愿意接收订单的司机
     *
     * @param number 订单编号
     * @return List<Driver>
     */
    List<Driver> getDriversByOrderNumber(String number);

    /**
     * 获取司机旧密码
     *
     * @param username 用户名
     * @return String
     */
    String getOldPassword(String username);

    /**
     * 修改司机密码
     *
     * @param username 用户名
     * @param password 新密码
     * @return Integer
     */
    Integer updatePassword(String username, String password);

    /**
     * 修改司机评分为新的平均分
     *
     * @param id 司机id
     * @return Integer
     */
    Integer updateCredit(String id);

    /**
     * 通过id获取司机信息
     *
     * @param id 司机id
     * @return Driver
     */
    Driver getDriverById(String id);

    /**
     * 条件查询司机
     *
     * @param driver Driver
     * @return List<Driver>
     */
    List<Driver> getDriverByCondition(Driver driver);

    /**
     * 查询所有司机
     * @return List<Driver>
     */
    List<Driver> getAllDrivers();
}
